
package controlador;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import negocio.Proveedor;

/**
 *
 * @author AFDM
 */
public class ControladorProveedor extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, ClassNotFoundException
    {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        
        if ("Insertar".equals(request.getParameter("btreg")))
        {   
            ArrayList errores = new ArrayList();   
            String cod_proveedor = request.getParameter("cod_proveedor");
            String nit_proveedor = request.getParameter("nit_proveedor");
            String nom_proveedor = request.getParameter("nom_proveedor");
            String direc_proveedor = request.getParameter("direc_proveedor");
            String tel_proveedor = request.getParameter("tel_proveedor");
      
        if(cod_proveedor.isEmpty() && nit_proveedor.isEmpty() && nom_proveedor.isEmpty() && direc_proveedor.isEmpty() && tel_proveedor.isEmpty())
           {
               errores.add("Todos los campos deben estar llenos");
           }
       
        else
        {
            if (cod_proveedor.isEmpty()) {
                errores.add("Falta ingresar código");
            }
            if (nit_proveedor.isEmpty()) {
                errores.add("Falta ingresar nit");
            }
            if (nom_proveedor.isEmpty()) {
                errores.add("Falta ingresar nombre");
            }
            if (direc_proveedor.isEmpty()) {
                errores.add("Falta ingresar dirección");
            }
            if (tel_proveedor.isEmpty()) {
                errores.add("Falta ingresar teléfono");
            }
        }  
            String mensaje;
            if (errores.isEmpty()) {/*Enviando constructor y enviando datos*/
                Proveedor a = new Proveedor(cod_proveedor, nit_proveedor, nom_proveedor, direc_proveedor, tel_proveedor);
                if (a.insertarProveedor()) 
                {
                    session.setAttribute("cod_proveedor","");
                    session.setAttribute("nit_proveedor","");
                    session.setAttribute("nom_proveedor","");
                    session.setAttribute("direc_proveedor","");
                    session.setAttribute("tel_proveedor","");
                    
                    mensaje = "Proveedor registrado con éxito";
                    
                    request.setAttribute("mensaje", mensaje);
                    RequestDispatcher vista = request.getRequestDispatcher("proveedor.jsp");
                    vista.forward(request, response);
                } 
                else 
                {
                    mensaje = "No fue posible registrar el nuevo Proveedor";
                    request.setAttribute("mensaje", mensaje);
                    RequestDispatcher vista = request.getRequestDispatcher("proveedor.jsp");
                    vista.forward(request, response);
                }
            } 
            else
            {
           session.setAttribute("cod_proveedor", cod_proveedor);
           session.setAttribute("nit_proveedor", nit_proveedor);
           session.setAttribute("nom_proveedor", nom_proveedor);
           session.setAttribute("direc_proveedor", direc_proveedor);
           session.setAttribute("tel_proveedor", tel_proveedor);
           
           mensaje = "";
           request.setAttribute("mensaje", mensaje);
           request.setAttribute("errores", errores);
           RequestDispatcher vista = request.getRequestDispatcher("proveedor.jsp");
           vista.include(request, response);
           
            }
        }
        if ("Eliminar".equals(request.getParameter("bteli"))) {
            
            
            String cod_proveedor = request.getParameter("cod_proveedor");
            String nit_proveedor = request.getParameter("nit_proveedor");
            String nom_proveedor = request.getParameter("nom_proveedor");
            String direc_proveedor = request.getParameter("direc_proveedor");
            String tel_proveedor = request.getParameter("tel_proveedor");
            
            ArrayList errores = new ArrayList();
              
            
             if(cod_proveedor.isEmpty() || nit_proveedor.isEmpty() || nom_proveedor.isEmpty() || direc_proveedor.isEmpty() || tel_proveedor.isEmpty())
           {
               errores.add("Para eliminar debe consultar");
           }
            
               String mensaje;
            if (errores.isEmpty()){
            Proveedor a = new Proveedor();
            a.eliminarProveedor(cod_proveedor);  
            session.setAttribute("cod_proveedor","");
            session.setAttribute("nit_proveedor","");
            session.setAttribute("nom_proveedor","");
            session.setAttribute("direc_proveedor","");
            session.setAttribute("tel_proveedor","");
            
            mensaje = "Registro eliminado con éxito";
            request.setAttribute("mensaje", mensaje);
            RequestDispatcher vista = request.getRequestDispatcher("proveedor.jsp");         
            vista.forward(request, response);
            }
            else
            {
                 session.setAttribute("cod_proveedor",cod_proveedor);
                    session.setAttribute("nit_proveedor",nit_proveedor);
                    session.setAttribute("nom_proveedor",nom_proveedor);
                    session.setAttribute("direc_proveedor",direc_proveedor);
                    session.setAttribute("tel_proveedor",tel_proveedor);
                    
                     mensaje = "";
                     
                 request.setAttribute("mensaje", mensaje);
                 request.setAttribute("errores", errores);
                 RequestDispatcher vista = request.getRequestDispatcher("proveedor.jsp");
                 vista.include(request, response);
            }
        }

        else if ("Modificar".equals(request.getParameter("btmod"))) {
            
            String cod_proveedor = request.getParameter("cod_proveedor").trim();
            String nit_proveedor = request.getParameter("nit_proveedor");
            String nom_proveedor = request.getParameter("nom_proveedor");
            String direc_proveedor = request.getParameter("direc_proveedor");
            String tel_proveedor = request.getParameter("tel_proveedor");
            
            ArrayList errores = new ArrayList();
            
             if(cod_proveedor.isEmpty() || nit_proveedor.isEmpty() || nom_proveedor.isEmpty() || direc_proveedor.isEmpty() || tel_proveedor.isEmpty())
           {
               errores.add("Para modificar debe consultar");
           }
             
                String mensaje;
          if (errores.isEmpty()){
            Proveedor a = new Proveedor(cod_proveedor,nit_proveedor,nom_proveedor,direc_proveedor,tel_proveedor);
            a.modificarProveedor();
            session.setAttribute("cod_proveedor","");
            session.setAttribute("nit_proveedor","");
            session.setAttribute("nom_proveedor","");
            session.setAttribute("direc_proveedor","");
            session.setAttribute("tel_proveedor","");
            
            mensaje = "Registro modificado con éxito";
            request.setAttribute("mensaje", mensaje);
            RequestDispatcher vista = request.getRequestDispatcher("proveedor.jsp");
            vista.forward(request, response);
             }
          else
            {
                    session.setAttribute("cod_proveedor",cod_proveedor);
                    session.setAttribute("nit_proveedor",nit_proveedor);
                    session.setAttribute("nom_proveedor",nom_proveedor);
                    session.setAttribute("direc_proveedor",direc_proveedor);
                    session.setAttribute("tel_proveedor",tel_proveedor);
                    
                     mensaje = "";
                     
                 request.setAttribute("mensaje", mensaje);
                 request.setAttribute("errores", errores);
                 RequestDispatcher vista = request.getRequestDispatcher("proveedor.jsp");
                 vista.include(request, response);
            }
        }
        else if ("Consultar".equals(request.getParameter("btcon"))) {
             String cod_proveedor = request.getParameter("cod_proveedor");
             ArrayList errores = new ArrayList();
          
             if (cod_proveedor.isEmpty()){
                errores.add("Falta ingresar el codigo");
            }
            
            if (errores.isEmpty()){
                Proveedor a = new Proveedor();
                ArrayList lista = (ArrayList)a.buscarProveedor(cod_proveedor);
                request.setAttribute("lista", lista);
                
                for(int i=0; i<lista.size();i++){
                    a=(Proveedor)lista.get(i);
                    session.setAttribute("cod_proveedor",a.getCod());
                    session.setAttribute("nit_proveedor",a.getNit());
                    session.setAttribute("nom_proveedor",a.getNom());
                    session.setAttribute("direc_proveedor",a.getDirec());
                    session.setAttribute("tel_proveedor",a.getTel());
                    
                }
                RequestDispatcher vista = request.getRequestDispatcher("proveedor.jsp");
                vista.forward(request, response);
            }
        }
    }      
           
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">

    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ControladorPerfil.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ControladorPerfil.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}